package com.app.utils;

import com.app.enums.BaiduRequestParameters;
import com.app.model.beans.Device;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 *http请求参数生成工具类
 */
public class ParameterGenerator {
    /**
     * UNIX时间戳转换
     * @param device 设备实例
     * @return 转换后的UNIX时间戳
     */
    public static Long getUnixTimeStamp(Device device) throws ParseException {
        SimpleDateFormat format = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
        Date _date = format.parse(device.getD_Date() + " " + device.getD_timeStamp());
        System.out.println("loc_time:"+_date.getTime()/1000);
        return _date.getTime()/1000;
    }

    /**
     * UNIX时间戳变换
     * @param time 时间 String类型 格式yy-MM-dd HH:mm:ss
     * @return UNIX时间戳
     * @throws ParseException
     */
    public static Long getUnixTimeStamp(String time) throws ParseException{
        SimpleDateFormat format = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
        Date date=format.parse(time);
        return date.getTime()/1000;
    }
    /**
     * 上传轨迹点所需的参数
     * ak,service_id,latitude,longitude,coord_type,loc_time,entity_name,自定义
     * @param device 设备实例
     * @return 参数
     */
    public static String getPointUpdateParameter(Device device) throws ParseException {
        String result =  String.valueOf(BaiduRequestParameters.BASIC) + "&" +
                "latitude=" + device.getD_latitude() + "&" +
                "longitude=" + device.getD_longitude() + "&"+
                "coord_type=1"+"&"+
                "loc_time="+getUnixTimeStamp(device)+"&"+
                "entity_name="+"device"+device.getD_code();
        System.out.println(result);
        return result;
    }

    /**
     * 查询鹰眼历史所需参数
     * @param device_code 设备编号
     * @param start_time 起始时间
     * @param end_time 结束时间
     * @return 参数字符串
     * @throws ParseException
     */
    public static String getCloudHistroyParamter(String device_code,String start_time,String end_time) throws ParseException {
        String result = String.valueOf(BaiduRequestParameters.BASIC)+"&"+
                "start_time="+getUnixTimeStamp(start_time)+"&"+
                "end_time="+getUnixTimeStamp(end_time)+"&"+
                "entity_name="+device_code+"&"+
                "simple_return="+0;
        System.out.println("getCloudHistory:"+result);
        return result;
    }

    /**
     * 查询entity列表所需参数
     * @param device_codes entity_name集合 用','隔开
     * @param active_time 活跃时间
     * @param return_type 返回结果类型
     * @return json
     * @throws ParseException
     */
    public static String getEntityListParameter(String device_codes,String active_time,Integer return_type ) throws ParseException {
        String result = String.valueOf(BaiduRequestParameters.BASIC)+"&"+
                "entity_names+"+device_codes+"&"+
                "active_time"+getUnixTimeStamp(active_time)+"&"+
                "return_type"+return_type;
        System.out.println("getEntityList:"+result);
        return result;
    }
}
